package com.innovations.inn.service;

import com.innovations.inn.domain.CodeSystem;
import com.innovations.inn.domain.ValueSetInfo;
import com.innovations.inn.domain.response.ResponseValueSetInfoCount;
import java.util.List;

/**
 * 字典分类Service接口
 *
 * @author dp
 * @date 2024-11-01
 */
public interface ICodeSystemService {
    /**
     * 查询字典分类
     *
     * @param codeSystemId 字典分类主键
     * @return 字典分类
     */
    CodeSystem selectCodeSystemByCodeSystemId(Long codeSystemId);

    /**
     * 查询字典分类列表
     *
     * @param codeSystem 字典分类
     * @return 字典分类集合
     */
    List<CodeSystem> selectCodeSystemList(CodeSystem codeSystem);

    /**
     * 新增字典分类
     *
     * @param codeSystem 字典分类
     * @return 结果
     */
    int insertCodeSystem(CodeSystem codeSystem);

    /**
     * 修改字典分类
     *
     * @param codeSystem 字典分类
     * @return 结果
     */
    int updateCodeSystem(CodeSystem codeSystem);

    /**
     * 批量删除字典分类
     *
     * @param codeSystemIds 需要删除的字典分类主键集合
     * @return 结果
     */
    int deleteCodeSystemByCodeSystemIds(Long[] codeSystemIds);

    /**
     * 删除字典分类信息
     *
     * @param codeSystemId 字典分类主键
     * @return 结果
     */
    int deleteCodeSystemByCodeSystemId(Long codeSystemId);

    /**
     * 实体数据补全
     *
     * @param codeSystem 实体
     * @param userId     用户id
     * @param crateType  创建类型 1：新增 2：修改
     */
    void completeData(CodeSystem codeSystem, Long userId, Integer crateType);

    /**
     * 查询字典分类对应明细
     *
     * @param codeSystem 字典分类
     * @return 字典分类集合
     */
    List<ValueSetInfo> selectCodeSystemListValue(CodeSystem codeSystem);

    /**
     * 查询字典分类对应明细计数
     *
     * @param codeSystem 字典分类
     * @return 字典分类计数集合
     */
    List<ResponseValueSetInfoCount> selectCodeSystemListValueCount(CodeSystem codeSystem);

}
